With the development of communications networks such as the Internet and the wide acceptance of broadband connections, there is a demand by consumers for video and audio services (for example, television programs, movies, video conferencing, radio programming) that can be selected and delivered on demand through a communication network. Video services, referred to as media objects or streaming audio/video, often suffer from quality issues due to the bandwidth constraints and the bursty nature of communications networks generally used for streaming media delivery. The design of a streaming media delivery system therefore must consider codecs (encoder/decoder programs) used for delivering media objects, quality of service (QoS) issues in presenting delivered media objects, and the transport of information over communications networks used to deliver media objects as audio and video data as a signal.
Codecs are typically implemented through a combination of software and hardware as a system used for encoding data representing a media object at a transmission end of a communications network and for decoding data at a receiver end of the communications network. Design considerations for codecs include such issues and as bandwidth scalability over a network, computational complexity of encoding/decoding data, resilience to network losses (loss of data), and encoder/decoder latencies for transmitting data representing media streams. Commonly used codecs utilizing both Discrete Cosine Transformation (DCT) (e.g., H.263+) and non-DCT techniques (e.g., wavelets and fractals) are examples of codecs that consider these above detailed issues. Codecs are used to compress and decompress data because of the limited bandwidth available through a communications network.
Quality of service issues relate to the delivery of information and the overall experience for a user watching a media stream. Media objects are delivered through a communications network, such as the Internet, in discrete units known as packets. These units of information, typically transmitted in a sequential order, are sent via the Internet through nodes commonly known as servers and routers. It is therefore possible that two sequentially transmitted packets arrive at a destination device at different times because the packets may take different paths through the Internet. Consequentially, a QoS problem known as dispersion could result where a packet transmitted later in time may be processed and displayed by a destination device before an earlier transmitted packet, leading to discontinuity of displayed events. Similarly, it is possible for packets to be lost when being transmitted. A destination device typically performs an error concealment technique to hide the loss of data. Methods of ensuring QoS over a network as over-allocating the number of transmitted packets or improving quality of a network under a load state may be used, but these methods introduce additional overhead requirements affecting communication network performance.
Communication networks control the transfer of data packets by the use of a schema known as a transport protocol. Transmission Control Protocol (TCP) described in Internet Engineering Task Force (IETF) RFC 793 is a well-known transport protocol that controls the flow of information throughout a communications network by maintaining parameters as flow control, error control, and the time organized delivery of data packets. These types of controls are administered through the use of commands that may either exist in a header of a packet or separate from packets that are transmitted between devices through the communications network, relaying information about the status of network communications. This control information works well for a communications network that operates in a “synchronous” manner where the transmission of data packets for media objects tends to be orderly.
Other types of media objects, in the form of streamed data, tend to be delivered or generated asynchronous by where the flow of packets may not be consistent. These packets are transmitted and received at different times, hence asynchronously, in where received packets are reconstituted in view of data present in the headers of such packets. The transmission of asynchronous packets suffers when network conditions drastically reduce the transmission (or receipt) of packets, resulting in network loss of service, degradation, or requiring a transmission to time out that cancels a transmission.
Flow control methods are already known in the art, using network control messages such as Real Time Control Protocol (RTCP), Internet Control Message Protocol (ICMP), Simple Network Management Protocol (SNMP), and the like, which can adjust and control the bit rate transmission of packets over a communications network. A transmitter receives feedback about current network conditions (as network communications parameters) and modifies the transmission bit rate in response. The transmission bit rate of packets is increased if network conditions are not congested, which improves the quality of a transmission. The bit rate of a transmission is similarly decreased, if network congestion is high, degrading the transmission of packets.
Flow control methods are typically limited to the consideration of relatively few variables. The ability of a network to adjust to these reported network conditions is limited to a non-realistic mathematical model, which does not take into account the asynchronous nature of a packet-based network. The transmission of packets comprising a media object, transmitted as streamed data, would benefit from a system adapting to network conditions providing better QoS than fixed subroutines.